/*
 * @(#)$Id: MessageFormatter.java 3619 2008-03-26 07:23:03Z yui $
 * 
 * Copyright 2006-2008 Makoto YUI
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 * 
 * Contributors: Makoto YUI - initial implementation
 */
package jacky.lanlan.song.resource;

import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;
import java.util.*;

/**
 * 
 * @author Makoto YUI (yuin405+xbird@gmail.com)
 */
public final class MessageFormatter {

	private final Map<String, String> bundle;

	public MessageFormatter(InputStream is) {
		final ResourceBundle b;
		try {
			b = new PropertyResourceBundle(is);
		}
		catch (IOException e) {
			throw new RuntimeException(e);
		}
		bundle = convertMap(b);
	}

	public String getMessage(String msgCode) {
		return getMessage(msgCode, null);
	}

	public String getMessage(String msgCode, Object[] args) {
		String pattern = bundle.get(msgCode);
		return (pattern == null) ? msgCode : MessageFormat.format(pattern, args);
	}

	private static final Map<String, String> convertMap(ResourceBundle bundle) {
		Map<String, String> ret = new HashMap<String, String>();
		for (Enumeration<String> e = bundle.getKeys(); e.hasMoreElements();) {
			String key = e.nextElement();
			String value = bundle.getString(key);
			ret.put(key, value);
		}
		return ret;
	}

}
